當我們建立好一個 Elastic Cloud 的 Deployment 之後,下一步就是要建立 Index,但是 Index 建立時的底層是如何運作的呢?
假設有一組擁有 4 個 Nodes 的 Elasticsearch Cluster:
a
, shard: 2, replica: 1 (有 a0
, a1
兩個深色的 primary shard, 另各有一份白底的 replica shard)b
, shard: 3, replica: 1 (有 b0
, b1
, b2
三個深色的 primary shard, 另各有一份白底的 replica shard)當我們要建立一個新的 Index c
時,Elasticsearch 會執行以下幾個檢查的步驟:
hot
attribute 的 node 身上。cluster.routing.allocation.disk.watermark.low
設定的水位,則不會將新的 shard 放在該 node 身上。indices.recovery.concurrent_small_file_streams
和 indices.recovery.concurrent_file_streams
的設置是否達到,而是否要暫緩目前 create index 的動作。若 Shard Allocation Decider 一切順利,將會進行 Primary Shard 的初始化:
Initializing
。started
,並且通知 cluster 中的大家這個狀態,而這個存在此 pirmary shard 的 node 也收到 master node 的通知時,就會將這個 shard 的狀態設定成 started
,這時就能提供 indexing 的處理了。當我們 Primary Shard 正常運作之後,Cluster 會檢查目前 replica 的設定是否滿足,若是有需要執行 replica 的複制則進行下列步驟:
Initializing
。started
,並且通知 cluster 中的大家。到此階段,這個 Index 算是完成了被建立的這個流程,也開始能正常的提供服務了,下一步就是將要 indexing 進 Elasticsearch 的文件準備好吧!
查看最新 Elasticsearch 或是 Elastic Stack 教育訓練資訊: https://training.onedoggo.com
歡迎追蹤我的 FB 粉絲頁: 喬叔 - Elastic Stack 技術交流
不論是技術分享的文章、公開線上分享、或是實體課程資訊,都會在粉絲頁通知大家哦!
此系列文章已整理成書
喬叔帶你上手 Elastic Stack:Elasticsearch 的最佳實踐與最佳化技巧
書中包含許多的修正、補充,也依照 Elastic 新版本的異動做出不少修改。
有興趣的讀書歡迎支持! 天瓏書局連結